﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SPM.DTL;

namespace SPM.DAL
{
    /**
     *       Autor: Guilherme Elias
     *        Data: 07/09/2008 18:30
     *   Descricao: Classe que representa a entidade de mapeamento da tabela beneficiario.  
     */
    public class BeneficiarioDao:DataAccessObject<BeneficiarioDto>
    {

        internal override void FillDto(System.Data.IDataReader reader, BeneficiarioDto item)
        {
            item.Id = (int)reader["idBeneficiario"];
            item.Nome = (string)reader["nome"];
            item.DtNascimento = (string)reader["dataNascimento"];
            item.Idade = (int)reader["idade"];
            item.Responsavel = (string)reader["responsavel"];
            item.Endereco = (string)reader["endereco"];
            item.Bairro = (string)reader["bairro"];
        }

        /**
         *  Método responsavel por retornar o nome da tabela
         *  correspondente a entitade manipulada.
         */ 
        public override string TableName
        {
            get { return "beneficiario"; }
        }

        protected override System.Data.IDbCommand CreateUpdateCommand(int idBeneficiario, BeneficiarioDto newBeneficiario)
        {
             string sqlUpdate = String.Format("UPDATE BENEFICIARIO SET nome='{0}', dataNascimento='{1}', idade={2}, responsavel='{3}',"+
                 "endereco='{4}', bairro='{5}' WHERE idBeneficiario={6}",newBeneficiario.Nome,newBeneficiario.DtNascimento,newBeneficiario.Idade,
                 newBeneficiario.Responsavel, newBeneficiario.Endereco, newBeneficiario.Bairro, idBeneficiario);

             return factory.CreateCommand(sqlUpdate);
        }

        protected override BeneficiarioDto CreateItemFromReader(System.Data.IDataReader reader)
        {
            BeneficiarioDto beneficiario = new BeneficiarioDto();

            beneficiario.Id = (int)reader["idBeneficiario"];
            beneficiario.Nome = (string)reader["nome"];
            beneficiario.DtNascimento = (string)reader["dataNascimento"];
            beneficiario.Idade = (int)reader["idade"];
            beneficiario.Responsavel = (string)reader["responsavel"];
            beneficiario.Endereco = (string)reader["endereco"];
            beneficiario.Bairro = (string)reader["bairro"];

            return beneficiario;
        }

        protected override System.Data.IDbCommand CreateInsertCommand(BeneficiarioDto beneficiario)
        {
            string sqlInsert = String.Format("INSERT INTO {0} (nome, dataNascimento, idade, responsavel," +
                   " endereco, bairro) VALUES ('{1}','{2}',{3},'{4}','{5}','{6}')", TableName, beneficiario.Nome, beneficiario.DtNascimento,
                   beneficiario.Idade, beneficiario.Responsavel, beneficiario.Endereco, beneficiario.Bairro);

            return factory.CreateCommand(sqlInsert);   
        }
    }
}